package datenbank;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import java.util.Collection;
import java.util.LinkedList;

public class BenutzerDB {
  private static final String base_query = "SELECT * FROM benutzer ";

  private static final String insert_query = "INSERT INTO benutzer(persnr, vorname, nachname, mail, benutzername, passwort, geschlecht" +
  		"isgeraeteverwalter, abteilungsnr) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
  
  public static Collection<BenutzerDTO> findAll(final Connection cn) {
	  System.out.println ("Hallo ich bin findAll() in der BenutzerDB.java");
	  System.out.println ("BenutzerDB.findAll");
    final LinkedList<BenutzerDTO> erg = new LinkedList<BenutzerDTO>();

    try {
      PreparedStatement stmt = cn.prepareStatement(base_query);

      ResultSet rset = stmt.executeQuery();
      //BenutzerDTO dto;
      while (rset.next()) {
    	BenutzerDTO dto = new BenutzerDTO(rset);
        dto.testausgabe();
        
        erg.add(dto);
      }
      rset.close();
    } catch (SQLException e) {
      System.err.println("Ein DB-Fehler ist aufgetreten:" + e.toString());
    }
    System.out.println ("BenutzerDB.findAll gefunden:"+erg.size());
    return erg;
  }

  public static int insert (final Connection cn, final BenutzerDTO dto) throws SQLException {
    System.out.println ("insert mit: "+dto);
    // ToDo
    try{
    	
    	PreparedStatement insert = cn.prepareStatement(insert_query);
    
    	insert.setString(1, dto.getPersnr());
    	insert.setString(2, dto.getVorname());
    	insert.setString(3, dto.getNachname());
    	insert.setString(4, dto.getMail());
    	insert.setString(5, dto.getBenutzername());
    	insert.setString(6, dto.getPasswort());
    	
    	if(dto.getGeschlecht() == 'm')insert.setString(7, "m");
    	else insert.setString(7, "w");
    	
    	if(dto.isIsgeraeteverwalter()) insert.setString(8, "1");
    	else insert.setString(8, "0");
    	
    	insert.setInt(9, dto.getAbteilungsnr());
    } catch (Exception e) {
    	System.err.println("Ein DB-Fehler ist beim Einfuegen aufgetreten:" + e.toString());
    }
    return 0;
  }
  
  public static int update (final Connection cn, final BenutzerDTO dto) throws SQLException {
    System.out.println ("update mit: "+dto);
    // ToDo
    return 0;
  }
}
